package input;

import instance.Instance;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;

public class LeerArchEntradaEj1 implements Input {

	private String nombArch;
	private File arch1;
	private BufferedReader br1;
	private int[] arr1;
	private int[] arr2;
	
	/* para el test de correctitud: */
	private int res_esperado;

	public LeerArchEntradaEj1(String Archivo) {

		nombArch = Archivo;
	}

	public void AbrirArchivo() throws FileNotFoundException {
		System.out.println("abro archivo");
		arch1 = new File(nombArch);
		br1 = new BufferedReader(new FileReader(arch1));
	}

	public void CerrarArchivos() throws Exception {
		br1.close();

	}

	public int[] getArray1() {
		return arr1;
	}

	public int[] getArray2() {

		return arr2;

	}

	public void readFile() throws Exception {
		String line1;
		StringTokenizer st;
		Vector<Integer> v1 = new Vector<Integer>();
		Vector<Integer> v2 = new Vector<Integer>();
		int a[] = null;
		int b[] = null;
		// lee primer vector de la instancia del archivo de entrada
		if ((line1 = br1.readLine()) != null) {
			st = new StringTokenizer(line1);
			System.out.println("Linea1 archivo entrada: " + line1);
			while (st.hasMoreTokens()) {
				int e1 = Integer.parseInt(st.nextToken().trim());
				v1.add(e1);
			}

			a = vectorAarray(v1);
		}
		arr1 = a;

		// lee segundo vector de la instancia del archivo de entrada
		if ((line1 = br1.readLine()) != null) {
			st = new StringTokenizer(line1);
			System.out.println("Linea2 archivo entrada: " + line1);
			while (st.hasMoreTokens()) {
				int e1 = Integer.parseInt(st.nextToken().trim());
				v2.add(e1);
			}
			b = vectorAarray(v2);
		}
		arr2 = b;

	}

	private int[] vectorAarray(Vector<Integer> v1) throws Exception {
		int i = v1.size();
		int[] array = new int[i];
		for (int k = 0; k < i; k++) {
			array[k] = v1.elementAt(k);
		}
		return array;
		
		

	}

	
	public int getResEsperado(){
		return res_esperado;
	}
	
	public boolean HayMasCasosEj1() throws Exception {
		if ((arr1 == null) & (arr2 == null)) {
			return false;
		} else {
			return true;
		}
	}

	public void readFileTestCorrectitud() throws Exception{
		String line1;
		StringTokenizer st;
	  	Vector<Integer> v1 = new Vector<Integer>();
		Vector<Integer> v2 = new Vector<Integer>();
		int a[]=null;
		int b[]=null;
		while((line1=br1.readLine())!=null){
			if(line1.charAt(0) != '#') break;
		}
		/*Primero me fijo que no haya llegado al final del archivo. si llegué, que no haga nada con el res_esperado*/
		if(line1!=null)	{
			/* en line1 tengo el resultado esperado*/
			st = new StringTokenizer(line1);
			res_esperado = Integer.parseInt(st.nextToken().trim());
		}
			
		/* ahora queda leer primer vector de la instancia del archivo de entrada*/
		if((line1=br1.readLine())!=null){
			st = new StringTokenizer(line1);
			System.out.println("Linea1 archivo entrada: " +line1);
		     while(st.hasMoreTokens()){
		    	    int e1=Integer.parseInt(st.nextToken().trim());
		            v1.add(e1);
		     }       	
        
		       a= vectorAarray(v1);
		}      arr1=a;
		
		//lee segundo vector de la instancia del archivo de entrada
		if  ((line1=br1.readLine())!=null){
		    	  st = new StringTokenizer(line1);
		    	  System.out.println("Linea2 archivo entrada: " +line1);
		    	  while(st.hasMoreTokens()){
		    		int e1=Integer.parseInt(st.nextToken().trim());
	            	v2.add(e1);
		    	  }	
	           b = vectorAarray(v2); 
		}       arr2=b;
		
	}
	
	@Override
	public List<Instance> getInstances() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Instance readInstance(BufferedReader bufferedReader)
			throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

}
